home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
taropyon
/
hewin
/
ccisrc
/
ntm.cci
< prev
next >
Wrap
Text File
|
1993-11-30
|
27KB
|
1,070 lines
/*************************************************************************
* "ntm.cci" : 通信ターミナル用
*************************************************************************/
/* #define _NTM_DEBUG */
#ifdef _NTM_DEBUG
# define _NTM_DSP(pos,s) DSP_putf12(pos*8,480-16-16,C_HGREEN,0,s)
#else
# define _NTM_DSP(pos,s)
#endif
#define CENTER_DAT_FN "center.dat"
#define DTR_OFF_TIME 2
/* タイムバッファ */
#define NTM_TIME_LOGIN (0)
#define NTM_TIME_LOGOUT (1)
/* 汎用変数 */
#define NTM_REG_AUTONAVI (0)
#ifndef _NAV_IGNORE
#include "ntmdial.cci"
#endif
/*************************************************************************
* ダイアル
*************************************************************************/
int ntm_dialStart( char *ntm, char *tel )
{
int ret, count, i, argc;
char **argv;
char *mosTk;
char *center;
char *cmd;
if ( tel == NULL || tel[0] == '\0' )
{
TEL_ERR:
DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
AplErrMsgTime, " 電話番号が指定されていません。 " );
return (ERR);
}
argc = FS_argSet( tel, &argv );
if ( argc < 1 )
goto TEL_ERR;
mosTk = MOS_push();
MOS_curType(MOSCUR_TEL);
if ( (center = NtmGetCenterPtr(ntm)) == NULL )
{
cmd = NULL;
} else
{
cmd = NtmCenterGetModem1(center);
if ( cmd[0] == '\0' )
cmd = NULL;
}
if ( cmd )
NTM_rsPuts(ntm,cmd);
else
NTM_rsPuts(ntm,"ATZ");
NTM_rsPuts(ntm,"\r");
ret = NTM_waitStr( ntm, 30, "OK", NULL );
if ( ret < 0 )
{
DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
AplErrMsgTime, " Modem not ready!! " );
ERR_RET:
MOS_pop( mosTk );
FS_argClear( argc, argv );
return (ERR);
}
if ( center )
{
NTM_wait(1);
cmd = NtmCenterGetModem2(center);
if ( cmd[0] != '\0' )
{
NTM_rsPuts(ntm,cmd);
NTM_rsPuts(ntm,"\r");
NTM_wait(2);
}
}
count = 0;
ret = 1;
while ( ret )
{
for ( i = 0; i < argc; ++i )
{
NTM_rsPuts(ntm, "ATD");
NTM_rsPuts(ntm, argv[i] );
NTM_rsPuts(ntm, "\r" );
MOS_CON();
EVT_idl();
ret = NTM_waitStr( ntm, 30, "CONNECT","BUSY","NO CARRIER", NULL );
if ( ret == 0 ) /* CONNECT */
{ SYL_puts(C_HGREEN,"<<<<< CONNECT >>>>>");
break;
} else if ( ret < 0 ) /* Cancel or Timeout */
goto ERR_RET;
if ( NTM_wait(5) != NORMAL )
goto ERR_RET;
++count;
}
}
NTM_online( ntm ); /* 接続 */
MOS_pop(mosTk);
FS_argClear( argc, argv );
return (NORMAL);
}
int ntm_chDir( char *dir )
{
int len;
char tmp[128];
if ( (len = strlen(dir)) == 0 )
return (NORMAL);
if ( len > 2 && isalpha(*dir) && dir[1] == ':' )
{ /* ドライブ指定あり */
FS_chdrv( toupper(*dir) - 'A' );
}
if ( len > 0 && FS_isdelim(dir[len-1]) )
{
sprintf( tmp, "%s.", dir );
FS_chdir( tmp );
} else
FS_chdir( dir );
return (NORMAL);
}
int ntmSetDownloadDir( char *ntm )
{
char *center;
char *dir;
if ( (center = NtmGetCenterPtr(ntm)) == NULL )
return (ERR);
dir = NtmCenterGetDownDir(center);
return ntm_chDir( dir );
}
int ntmSetUploadDir( char *ntm )
{
char *center;
char *dir;
if ( (center = NtmGetCenterPtr(ntm)) == NULL )
return (ERR);
dir = NtmCenterGetUpDir(center);
return ntm_chDir( dir );
}
/*************************************************************************
* イベント処理関数
*************************************************************************/
int ntmUsr_evtFunc( int evtNo, char *sbj )
{
return NTM_cmdJump( GET_EVTSBJ_PTR(sbj), evtNo );
}
/*************************************************************************
* [COMMAND]ボタン
*************************************************************************/
int NtmUsr_commandMenu( char *ntm, int x, int y )
{
int ret;
char *mnu;
char *obj;
char *func;
func = "ntmUsr_evtFunc";
obj = MNU_alloc(3);
MNU_setObj(obj, 0, MNU_NOR, '1', "Input line on" , NULL, NTMCMD_LION ,func, ntm );
MNU_setObj(obj, 1, MNU_NOR, '2', "Input line off" , NULL, NTMCMD_LIOFF ,func, ntm );
MNU_setObj(obj, 2, MNU_NOR, 'B', "Break" , NULL, NTMCMD_BREAK ,func, ntm );
mnu = MNU_open( x, y, MNUATT_EXIT, obj, "COMMAND MENU" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
return (ret);
}
int ntmPrintCutBuf()
{
return TDP_printCutBuf(NULL);
}
/*************************************************************************
* [MENU]メニュー
*************************************************************************/
int NtmUsr_fileMenu( char *ntm, int x, int y )
{
int ret;
char *mnu;
char *obj;
char *func;
func = "ntmUsr_evtFunc";
obj = MNU_alloc(5);
MNU_setObj(obj, 0, MNU_NOR, 'S', "Save log buffer" , NULL, NTMCMD_SAVELOG , func, ntm );
MNU_setObj(obj, 1, MNU_NOR, 'C', "Clear log buffer" , NULL, NTMCMD_CLEARBUF, func, ntm );
MNU_setObj(obj, 2, MNU_NOR, 'T', "Append to Text" , NULL, NTMCMD_APNDTXT , func, ntm );
MNU_setObj(obj, 3, MNU_BLK, 0 , NULL , NULL, 0 , NULL, NULL);
MNU_setObj(obj, 4, MNU_NOR, 'P', "Print CUT-BUFFER" , NULL, 0 , "ntmPrintCutBuf", ntm );
mnu = MNU_open( x, y, MNUATT_EXIT, obj, "MENU" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
return (ret);
}
/*************************************************************************
* テキストアップロード
*************************************************************************/
int ntm_textUpload( int ret, char *sbj )
{
char *ntm;
char *fdl;
char *fn;
ntm = GET_EVTSBJ_PTR(sbj);
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl,"TEXT FILE UPLOAD");
FDL_set_wildcard( fdl, "*.*");
ret = FDL_start(fdl);
fn = FDL_get_filename(fdl);
if ( ret == NORMAL && strlen(fn) > 0 )
{
NTM_fileUpload( ntm, fn );
}
FDL_close(fdl);
return (NORMAL);
}
/*************************************************************************
* X-Modem アップロード
*************************************************************************/
int ntm_Xupload( int ret, char *sbj )
{
char *ntm;
char *fdl;
char *fn;
ntm = GET_EVTSBJ_PTR(sbj);
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl,"X-MODEM FILE UPLOAD");
FDL_set_wildcard( fdl, "*.*");
ret = FDL_start(fdl);
fn = FDL_get_filename(fdl);
if ( ret == NORMAL && strlen(fn) > 0 )
{
NTM_Xupload( ntm, fn );
}
FDL_close(fdl);
return (NORMAL);
}
char *ntm_getPara_rzsz(char *ntm)
{
char *rsb;
int baud, md;
char *spd, mode[8];
static char tmp[256];
rsb = NtmGetRsbPtr(ntm);
md = _getByte(rsb);
baud = _getByte(rsb + 1);
switch ( baud )
{
case 0: spd = "300"; break;
case 1: spd = "600"; break;
case 2: spd = "1200"; break;
case 3: spd = "2400"; break;
case 4: spd = "4800"; break;
case 5: spd = "9600"; break;
case 6: spd = "19200"; break;
}
mode[0] = ( md & 1 ) ? '8' : '7';
mode[1] = ( md & 2 ) ? (md & 4 ? 'E':'O') : 'N';
mode[2] = ( md & 8 ) ? '2' : '1';
mode[3] = '\0';
sprintf( tmp,"$-b%s $-m%s", spd, mode );
return (tmp);
}
#ifdef _NTM_EXDOWN
char *SZ_PATH_KEY = "Sz_path";
int ntm_EXupload( int ret, char *sbj )
{
int ret;
char *ntm;
char *dlg;
char cmd[1024];
char *p, prog[128];
int argc;
char **argv;
char *fdl;
char *fnptr, fn[256];
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl,"FILE UPLOAD (EXTERNAL COMMAND)");
FDL_set_wildcard( fdl, "*.*");
ret = FDL_start(fdl);
fnptr = FDL_get_filename(fdl);
if ( ret == NORMAL && strlen(fnptr) > 0 )
{
strcpy( fn, fnptr );
} else
fn[0] = '\0';
FDL_close(fdl);
if ( fn[0] == '\0' )
return (NORMAL);
if ( (p = AMAC_getName(SysMacro,SZ_PATH_KEY)) == NULL )
{
#ifdef _TAROPYON_SYSTEM
strcpy( prog, "I:/HC/GUILIB3/PRG/ZMODEM/sz.exp" );
#else
sprintf( prog, "%ssz.exp", AplGetStartPath());
#endif
AMAC_setKey( SysMacro, SZ_PATH_KEY, prog );
} else
strcpy( prog, p );
ntm = GET_EVTSBJ_PTR(sbj);
dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 560,
" Command & parameters " );
DLG_getsSetTitle( dlg, "Call external command" );
sprintf( cmd, "%s $sz $-q %s %s", prog, ntm_getPara_rzsz(ntm), fn );
ret = DLG_getsStart( dlg, 1023, cmd );
DLG_getsClose(dlg);
if ( ret > 0 && cmd[0] )
{
argc = FS_argSet( cmd, &argv );
if ( argc > 0 )
{
if ( strcmpi( argv[0], prog ) )
{
strcpy( prog, argv[0] );
AMAC_setKey( SysMacro, SZ_PATH_KEY, prog );
}
FS_argClear( argc, argv );
}
AplDtaInit();
AplDtaSetStr( "$MainArg", "%s", cmd );
/* ネイティブ子プロセスに渡すパラメータ */
AplPclExec( prog, 0 );
}
return (NORMAL);
}
#endif
/*************************************************************************
* [ UP ]メニュー(アップロード)
*************************************************************************/
int NtmUsr_uploadMenu( char *ntm, int x, int y )
{
int ret;
char *mnu;
char *obj;
char *func;
int no, onum;
ntmSetUploadDir( ntm );
func = "ntmUsr_evtFunc";
onum = 4;
#ifdef _NTM_EXUP
++onum;
#endif
obj = MNU_alloc(onum);
no = 0;
MNU_setObj(obj, no++, MNU_NOR, 'C', "Send CUT-BUFFER" , NULL, NTMCMD_SENDCBUF, func, ntm );
MNU_setObj(obj, no++, MNU_NOR, 'T', "Send text buffer" , NULL, NTMCMD_SENDTBUF, func, ntm );
MNU_setObj(obj, no++, MNU_NOR, 'N', "Normal file upload" , NULL, 0, "ntm_textUpload", ntm );
MNU_setObj(obj, no++, MNU_NOR, 'X', "X-Modem upload" , NULL, 0, "ntm_Xupload" , ntm );
#ifdef _NTM_EXUP
MNU_setObj(obj, no++, MNU_NOR, 'E', "Upload (External)" , NULL, 0, "ntm_EXupload" , ntm );
#endif
mnu = MNU_open( x, y, MNUATT_EXIT, obj, "UPLOAD" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
return (ret);
}
/*************************************************************************
* テキストダウンロード
*************************************************************************/
int ntm_textDownload( int ret, char *sbj )
{
char *ntm;
char *fdl;
char *fn;
ntm = GET_EVTSBJ_PTR(sbj);
if ( NTM_fileDownCheck(ntm) )
return (ERR);
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl,"TEXT FILE DOWNLOAD");
FDL_set_wildcard( fdl, "*.*");
ret = FDL_start(fdl);
fn = FDL_get_filename(fdl);
if ( ret == NORMAL && strlen(fn) > 0 )
{
NTM_fileDownload( ntm, fn );
}
FDL_close(fdl);
return (NORMAL);
}
/*************************************************************************
* X-Modem ダウンロード
*************************************************************************/
int ntm_Xdownload( int ret, char *sbj )
{
char *ntm;
char *fdl;
char *fn;
ntm = GET_EVTSBJ_PTR(sbj);
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl,"X-MODEM FILE DOWNLOAD");
FDL_set_wildcard( fdl, "*.*");
ret = FDL_start(fdl);
fn = FDL_get_filename(fdl);
if ( ret == NORMAL && strlen(fn) > 0 )
{
NTM_Xdownload( ntm, fn );
}
FDL_close(fdl);
return (NORMAL);
}
#ifdef _NTM_EXDOWN
char *RZ_PATH_KEY = "Rz_path";
int ntm_EXdownload( int ret, char *sbj )
{
int ret;
char *ntm;
char *dlg;
char cmd[1024];
char *p, prog[128];
int argc;
char **argv;
if ( (p = AMAC_getName( SysMacro, RZ_PATH_KEY)) == NULL )
{
#ifdef _TAROPYON_SYSTEM
strcpy( prog, "I:/HC/GUILIB3/PRG/ZMODEM/rz.exp");
#else
sprintf( prog, "%srz.exp", AplGetStartPath());
#endif
AMAC_setKey( SysMacro, RZ_PATH_KEY, prog );
} else
strcpy( prog, p );
ntm = GET_EVTSBJ_PTR(sbj);
dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 560,
" Command & parameters " );
DLG_getsSetTitle( dlg, "Call external command" );
sprintf( cmd, "%s $-q $rz %s", prog, ntm_getPara_rzsz(ntm) );
ret = DLG_getsStart( dlg, 1023, cmd );
DLG_getsClose(dlg);
if ( ret > 0 && cmd[0] )
{
argc = FS_argSet( cmd, &argv );
if ( argc > 0 )
{
if ( strcmpi( argv[0], prog ) )
{
strcpy( prog, argv[0] );
AMAC_setKey( SysMacro, RZ_PATH_KEY, prog );
}
FS_argClear( argc, argv );
}
AplDtaInit();
AplDtaSetStr( "$MainArg", "%s", cmd );
AplPclExec( prog, 0 );
}
return (NORMAL);
}
#endif
#ifdef _NTM_DOSCALL
/*************************************************************************
* DOS コマンドを使ったダウンロード
*************************************************************************/
int ntm_DOSdownload( int ret, char *sbj )
{
char *ntm;
char *dlg;
char cmd[80];
int ret;
ntm = GET_EVTSBJ_PTR(sbj);
dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
" DOS command ? " );
DLG_getsSetTitle( dlg, "Call Child process" );
strcpy( cmd, "rz");
ret = DLG_getsStart( dlg, 79, cmd );
DLG_getsClose(dlg);
if ( ret > 0 )
{ /* ダウンロード開始 */
dlg = DLG_msgOpen( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
80*6, 14*12, C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
"DOWNLOAD" );
if ( dlg )
{
DLG_msgSetConfig( dlg, 4, 6, 12 );
DLG_msgClear( dlg, -1 );
DLG_msgConsSet( dlg, C_MBLACK, C_HWHITE); /* コンソール出力設定 */
}
MOS_DEC();
RS_pause();
system( cmd );
RS_continue();
MOS_INC();
if ( dlg )
{
DLG_msgPrintf(dlg,"\r\n***** COMPLETED *****\r\n");
NTM_wait(2);
DLG_msgConsEnd( dlg );
DLG_msgClose(dlg);
}
}
return (NORMAL);
}
#endif
/*************************************************************************
* [DOWN]メニュー(ダウンロード)
*************************************************************************/
int NtmUsr_downloadMenu( char *ntm, int x, int y )
{
int ret;
char *mnu;
char *obj;
char *func;
int no, onum;
ntmSetDownloadDir( ntm );
func = "ntmUsr_evtFunc";
onum = 2;
#ifdef _NTM_DOSCALL
++onum;
#endif
#ifdef _NTM_EXDOWN
++onum;
#endif
obj = MNU_alloc(onum);
no = 0;
MNU_setObj(obj, no++, MNU_NOR, 'N', "Normal file download" , NULL, 0, "ntm_textDownload", ntm );
MNU_setObj(obj, no++, MNU_NOR, 'X', "X-Modem download" , NULL, 0, "ntm_Xdownload" , ntm );
#ifdef _NTM_EXDOWN
MNU_setObj(obj, no++, MNU_NOR, 'E', "Download (External)" , NULL, 0, "ntm_EXdownload" , ntm );
#endif
#ifdef _NTM_DOSCALL
MNU_setObj(obj, no++, MNU_NOR, 'C', "Call DOS child process", NULL, 0, "ntm_DOSdownload" , ntm );
#endif
mnu = MNU_open( x, y, MNUATT_EXIT, obj, "DOWNLOAD" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
return (ret);
}
/*************************************************************************
* 直接ダイアル
*************************************************************************/
int ntm_directDial( char *ntm )
{
int ret;
char *dlg;
static char tel[256];
dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
"電話番号を入力してください。");
DLG_getsSetTitle( dlg, "DIAL" );
ret = DLG_getsStart( dlg, 255, tel );
DLG_getsClose(dlg);
if ( ret > 0 )
{
ntm_dialStart( ntm, tel );
}
return (NORMAL);
}
int ntm_centerSelect( char *ntm )
{
char *center;
char *keyWord;
if ( (center = NTM_centerSelect()) != NULL )
{ keyWord = NtmCenterGetKeyWord( center );
NTM_setCenter( ntm, keyWord ); /* センタを指定 */
}
return (NORMAL);
}
/*************************************************************************
* [AUTO]メニュー(センター未登録状態)
*************************************************************************/
int NtmUsr_autoFreeMenu( char *ntm, int x, int y )
{
int ret;
char *obj;
char *mnu;
obj = MNU_alloc(5);
MNU_setObj(obj, 0, MNU_NOR, 'D', "ダイアル" , NULL, 1, NULL, NULL );
MNU_setObj(obj, 1, MNU_NOR, 'S', "カレント・センター指定", NULL, 2, NULL, NULL );
MNU_setObj(obj, 2, MNU_BLK, 0 , NULL , NULL, 0, NULL, NULL );
MNU_setObj(obj, 3, MNU_NOR, 'N', "新規センター登録" , NULL, 3, NULL, NULL );
MNU_setObj(obj, 4, MNU_NOR, 'K', "センターデータ削除" , NULL, 4, NULL, NULL );
mnu = MNU_open( x, y, MNUATT_EXIT, obj, "AUTO MENU" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
switch( ret )
{
case 1: ret = ntm_directDial(ntm); break;
case 2: ret = ntm_centerSelect(ntm); break;
case 3: ret = NTM_makeNewCenter(); break;
case 4: ret = NTM_centerDelete(); break;
}
return (ret);
}
/*************************************************************************
* [AUTO]メニュー(非接続状態)
*************************************************************************/
int NtmUsr_autoOffLineMenu( char *ntm, int x, int y )
{
int ret, n;
char *center;
char *name, *keyWord;
char *obj;
char *mnu;
center = NtmGetCenterPtr( ntm );
if ( center == NULL )
{ /* センターが指定されていない */
return NtmUsr_autoFreeMenu( ntm, x, y );
} else
{
NTM_callCenterFunc( ntm, "naviInit" );
name = NtmCenterGetName( center);
keyWord = NtmCenterGetKeyWord(center);
#ifndef _NAV_IGNORE
n = NtmGetNaviServiceMode(ntm) ? 7 : 6;
#else
n = 6;
#endif
obj = MNU_alloc( n );
n = 0;
MNU_setObj(obj, n++, MNU_NOR, 'L', "オートログイン" , NULL, 1, NULL, NULL );
#ifndef _NAV_IGNORE
if ( NtmGetNaviServiceMode(ntm) )
MNU_setObj(obj, n++, MNU_NOR, 'A', "オートナビゲータ" , NULL, 2, NULL, NULL );
#endif
MNU_setObj(obj, n++, MNU_NOR, 'C', "センターデータ設定" , NULL, 3, NULL, NULL );
MNU_setObj(obj, n++, MNU_NOR, 'S', "カレント・センター変更", NULL, 4, NULL, NULL );
MNU_setObj(obj, n++, MNU_BLK, 0 , NULL , NULL, 0, NULL, NULL );
MNU_setObj(obj, n++, MNU_NOR, 'N', "新規センター登録" , NULL, 5, NULL, NULL );
MNU_setObj(obj, n++, MNU_NOR, 'K', "センターデータ削除" , NULL, 6, NULL, NULL );
mnu = MNU_open( x, y, MNUATT_EXIT, obj, name );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
switch ( ret )
{
case 1: /* Dial & login */
return NTM_callLogin( ntm );
#ifndef _NAV_IGNORE
case 2: /* Navigater */
break;
#endif
case 3: /* Config */
ret = NTM_centerConfig( keyWord );
if ( ret == NORMAL )
{ /* パラメータ再設定 */
NTM_setCenter( ntm, keyWord );
}
return (ret);
case 4: /* センター変更 */
return ntm_centerSelect(ntm); break;
case 5: /* 新規センター登録 */
return NTM_makeNewCenter();
case 6: /* センター削除 */
return NTM_centerDelete();
}
return (NORMAL);
}
}
/*************************************************************************
* [AUTO]メニュー(接続状態)
*************************************************************************/
int NtmUsr_autoOnLineMenu( char *ntm, int x, int y )
{
int ret;
char *center;
char *obj;
char *mnu;
center = NtmGetCenterPtr( ntm );
if ( center == NULL )
{ /* センターが指定されていない */
obj = MNU_alloc(1);
MNU_setObj(obj, 0, MNU_NOR, 'O', "OFF 回線切断", NULL, 1, NULL, NULL );
mnu = MNU_open( x, y, MNUATT_EXIT, obj, "AUTO MENU" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
switch ( ret )
{
case 1: return NTM_offline(ntm,DTR_OFF_TIME);
}
return (NORMAL);
} else
{
return NTM_callAutoMenu( ntm, x, y );
}
}
int _ntm_setFilterFunc( char *ntm, char *func )
{
int ret;
if ( (ret = NtmSetFilterFunc( ntm, func)) != NORMAL )
{ /* error */
DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
AplErrMsgTime, " %s : \n このフィルタ関数は他のウィンドゥで既に使われています。 ",
func );
} else
{
NtmFilterModeOn( ntm );
}
return (ret);
}
/*************************************************************************
* フィルター用正規表現の入力と設定
*************************************************************************/
int _ntm_inputFilterPtn( char *ntm )
{
int ret;
char *dlg;
char tmp[256];
strncpy( tmp, NtmGetFilterPtn(ntm), 255 );
tmp[255] = '\0';
dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
"%s", tmp );
DLG_getsSetTitle( dlg, "FILTER PATTERN" );
ret = DLG_getsStart( dlg, 255, tmp );
DLG_getsClose(dlg);
if ( ret > 0 )
{
if ( NtmSetFilterPtn(ntm,tmp,1) == NORMAL )
{ NtmSetFilterFunc( ntm, NULL ); /* フィルタ関数解除 */
NtmFilterModeOn( ntm );
}
}
return (NORMAL);
}
int _ntm_filterTest( char *ntm )
{
char *fdl;
char *fp;
int ret;
char *fn, tmp[256], buf[BUFSIZ];
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl,"FILTER SEND FILE");
FDL_set_wildcard( fdl, "*.*");
ret = FDL_start(fdl);
fn = FDL_get_filename(fdl);
if ( ret == NORMAL && strlen(fn) > 0 )
{
strcpy( tmp, fn );
} else
ret = ERR;
FDL_close(fdl);
if ( ret == NORMAL )
{
NTM_puts( ntm, "\r\n***** FILTER TEST *****\r\n");
if ( (fp = FM_fopen( tmp,"rb")) == NULL )
{ NTM_puts( ntm, "\r\n@ File open error!!\r\n");
return (ERR);
}
while ( fgets(buf,BUFSIZ,fp) != NULL )
{
NTM_sendFilter( ntm, buf );
if ( kbhit() )
{ NTM_puts( ntm, "\r\n***** BREAK *****\r\n");
break;
}
}
FM_fclose(fp);
}
return (0);
}
/*************************************************************************
* センター非選択状態のフィルタメニュー
*************************************************************************/
int NtmUsr_filterMenu( char *ntm, int x, int y )
{
int ret;
char *obj;
char *mnu;
obj = MNU_alloc(3);
MNU_setObj(obj, 0, MNU_NOR, 'F', "Set filter pattern" , NULL, 1, NULL, NULL );
MNU_setObj(obj, 1, MNU_NOR, 'O', "Filter mode off" , NULL, 2, NULL, NULL );
MNU_setObj(obj, 2, MNU_NOR, 'T', "Filter test" , NULL, 3, NULL, NULL );
mnu = MNU_open( x, y, MNUATT_EXIT, obj, "FILTER MENU" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
switch ( ret )
{
case 1:
_ntm_inputFilterPtn( ntm );
break;
case 2: /* filter off */
NtmSetFilterPtn( ntm, "",0 );
NtmSetFilterFunc( ntm, NULL );
NtmFilterModeOff( ntm );
break;
case 3:
_ntm_filterTest( ntm );
break;
}
return (NORMAL);
}
int NtmUsr_func_01( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_FILEMENU ); }
int NtmUsr_func_02( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_UPMENU ); }
int NtmUsr_func_03( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_DOWNMENU ); }
int NtmUsr_func_04( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_AUTOMENU ); }
int NtmUsr_func_05( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_SETUP ); }
int NtmUsr_func_06( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_FILTER ); }
int NtmUsr_func_10( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_BREAK ); }
int NtmUsr_func_11( char *ntm ) { NTM_help( ntm ); return (NORMAL) ; }
int NtmUsr_func_12( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_RESMAX ); }
int NtmUsr_func_32( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_RESMIN ); }
/*************************************************************************
* [SETUP2]
*************************************************************************/
int NtmUsr_func_25( char *ntm ) /* [SHIFT]+[PF5] */
{
char *cns;
int ret;
char *mnu;
char *obj;
cns = NtmGetCnsPtr( ntm );
obj = MNU_alloc(2);
MNU_setObj(obj, 0, MNU_NOR, 'C' , "Change color table", NULL, NTMCMD_CHGCOLOR, "ntmUsr_evtFunc", ntm );
MNU_setObj(obj, 1, MNU_NOR, 'T' , "Save color table" , NULL, 2 , NULL , NULL );
mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME,
MNUATT_EXIT, obj, "SETUP2" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
switch ( ret )
{
case 2: CnsUsr_saveColTbl( cns ); break;
}
return (NORMAL);
}
#include "ntmlib.cci"
#ifdef _NIFTY
#include "nifty.cci"
#endif
#ifdef _NANNO
#include "nanno.cci"
#endif
#ifdef _JATIC
#include "jatic.cci"
#endif
#ifdef _OFN
#include "ofn.cci"
#endif
#ifdef _HELINK
#include "helink.cci"
#endif
#ifdef _CENTER01
#include "center01.cci"
#endif
#ifdef _CENTER02
#include "center02.cci"
#endif
#ifdef _CENTER03
#include "center03.cci"
#endif
#ifdef _CENTER04
#include "center04.cci"
#endif
char *NtmTbl_metakey[26] =
{
/* A */ "read All",
/* B */ "go Bill",
/* C */ "Compose",
/* D */ "Down",
/* E */ "Echo",
/* F */ "Forward",
/* G */ "Guest",
/* H */ "go HP",
/* I */ "Insert",
/* J */ "Jump",
/* K */ "Delete",
/* L */ "Lib",
/* M */ "go Member",
/* N */ "Number",
/* O */ "Off",
/* P */ "go Phone",
/* Q */ "Quit",
/* R */ "Reply",
/* S */ "Store",
/* T */ "Time",
/* U */ "Upload",
/* V */ "View",
/* W */ "Wait",
/* X */ "rvl",
/* Y */ "sdl",
/* Z */ "mread room:"
};
/*************************************************************************
* システム初期化
*************************************************************************/
int NtmUsr_sysInit()
{
int i;
for ( i = 0; i < 26; ++i )
NtmMetaKeySet( 'A'+i, NtmTbl_metakey[i]);
#ifdef _NIFTY
_NIFTY_init(); /* NIFTY-Serve センター登録 */
#endif
#ifdef _NANNO
_NANNO_init(); /* Nanno netセンター登録 */
#endif
#ifdef _JATIC
_JATIC_init(); /* JATIC センター登録 */
#endif
#ifdef _OFN
_OFN_init(); /* Oh!FM TOWNS NET センター登録 */
#endif
#ifdef _HELINK
_HELINK_init(); /* HE-LINK センター登録 */
#endif
#ifdef _CENTER01
_CENTER01_init();
#endif
#ifdef _CENTER02
_CENTER02_init();
#endif
#ifdef _CENTER03
_CENTER03_init();
#endif
#ifdef _CENTER04
_CENTER04_init();
#endif
NTM_loadCenterData( CENTER_DAT_FN );
}
int NtmUsr_sysTerm( int saveFlag )
{
if ( saveFlag )
NTM_saveCenterData( CENTER_DAT_FN );
return (NORMAL);
}
/*************************************************************************
* 受信ラインチェック
*************************************************************************/
int NtmUsr_lineCheck( char *ntm, char *buf )
{
return (NORMAL);
}
/*************************************************************************
* 入力文字列の送信
*************************************************************************/
int NtmUsr_inputCheck( char *ntm, char *s )
{
NTM_rsPuts( ntm, s );
NTM_rsPuts( ntm, "\r" );
return (NORMAL);
}